﻿using System;
using System.Collections;
using DataScripter.Scripting;

namespace DataScripter.Containers
{
    public interface IContainer : INamedObject
    {
        bool HasRegistration<T>();
        void RegisterType<T>(Type type);
        void RegisterType<T>(string name, Type type);
        void RegisterType<T>(T instance);
        void RegisterType<T>(string name, T instance);
        void RegisterType(string name, Type type, Type interfaceType);
        T Resolve<T>();
        T Resolve<T>(string name);
        T Resolve<T>(string name, IDictionary dictionary);
        IContainer CreateChildContainer(string name);
        bool HasRegistration<T>(string name);
    }
}